#ifndef _EngineSystem_h_
#define _EngineSystem_h_

#include "BlazeEngineConfig.h"

#include "BlazeEngineLibrarySystem.h"
#include "BlazeEngineScriptSystem.h"
#include "BlazeEngineUISystem.h"
#include "BlazeEngineAudioSystem.h"
#include "BlazeEngineRenderSystem.h"
#include "BlazeEngineNetworkSystem.h"

class _BlazeExports BeSystem : public BeBaseSystem
{
public:
	BeSystem();
	~BeSystem();

	bool Install();
	void Uninstall();

	void SetScriptSystem(BeScriptSystem* pScriptSystem);
	void SetUISystem(BeUISystem* pUISystem);
	void SetAudioSystem(BeAudioSystem* pAudioSystem);
	void SetRenderSystem(BeRenderSystem* pRenderSystem);
	void SetNetworkSystem(BeNetworkSystem* pNetworkSystem);


	BeLibrarySystem* GetLibrarySystem();
	BeScriptSystem* GetScriptSystem();
	BeUISystem* GetUISystem();
	BeAudioSystem* GetAudioSystem();
	BeRenderSystem* GetRenderSystem();
	BeNetworkSystem* GetNetworkSystem();

private:

	BeLibrarySystem* m_pLibrarySystem;
	BeScriptSystem* m_pScriptSystem;
	BeUISystem*	m_pUISystem;
	BeAudioSystem* m_pAudioSystem;
	BeRenderSystem* m_pRenderSystem;
	BeNetworkSystem* m_pNetworkSystem;
};

#endif
